The present disclosure generally relates to initializing computer systems and, more particularly, to a system and methods for providing selectable initialization sequences for computer systems and servers.
Technological advancements for increasing the number of peripheral devices for computer systems and servers have taken on many forms. Several types of peripheral devices have become available for computer systems allowing users to expand a system""s basic functionality and configuration. For example, conventional systems can include expansion slots or bays connected to the system""s mother board for connecting peripheral devices.
Two of the most common interfaces for connecting peripheral devices include Peripheral Component Interconnect (PCI) interface systems and small computer system interface (SCSI) systems. PCI and SCSI interfaces are configured with xe2x80x9chot-plugsxe2x80x9d that allow users to add additional peripheral devices such as hard drives, tape drives, CD-ROM drives, scanners, etc. relatively easy. Hot-plugs provide the connection between an interface and a peripheral device using a small opening or panel in the computer system""s housing allowing a user to plug in peripheral devices without powering down the computer system.
A PCI interface system is configured to communicate with a system""s mother board and includes a plurality of expansion slots spaced closely together for high speed operation. PCI is designed to be synchronized with the clock speed of the mother board""s microprocessor and can transmit, up to 64 bits of data using a 188-pin connection. A single peripheral device communicates with the system using a PCI controller that plugs into one of the PCI expansion slots. The controller also has a port connected to one end of the controller card for connecting the peripheral device to the system.
SCSI interface systems are similar to PCI interface systems in that SCSI allows systems to communicate with external peripheral devices. A SCSI interface communicates through a parallel interface that provides quick access and high data transfer rates. For example, a 16-bit interface can provide up to 80 megabytes of data per second. Unlike PCI, a single SCSI can support up to devices when the devices are connected in a xe2x80x9cdaisy-chainxe2x80x9d fashion. One advancement in SCSI technology includes utilizing low voltage differential signaling for communicating with remotely located peripheral devices such as disk drives, scanners, printers, etc.
Conventional systems include peripheral devices connected to PCI or SCSI slots through the use of a device controllers that function as a communication interface between the added peripheral device and the system. Device controllers are configured with optional Read Only Memory (ROM) Integrated Circuits (ICs) that store initialization and run-time code. For example, when a system is turned on or rebooted, the system""s initialization routine uses a controller""s optional ROM code to initialize the peripheral device and provide run-time code for operating the device. During initialization, the system copies or xe2x80x9cshadowsxe2x80x9d each controller""s optional ROM code by loading the code into a portion of available system memory. The system then accesses the shadowed code of each controller during initialization and system operation.
A disadvantage of conventional systems can occur when too many peripheral devices are added to a system. Typically, a finite amount of memory is available to the system during initialization. During the system""s initialization routine, the basic input/output system (BIOS) executes a power on self test (POST) that initializes the hardware associated with the system and upon completing POST the BIOS loads an operating system (OS). Therefore, a system having only a finite amount of memory available during POST can initialize a limited number of peripheral devices.
One conventional method used to shadow the controller""s optional ROM codes is to shadow the optional ROM codes in a largest-to-smallest sequence. For example, a CD-ROM requiring 64 KB of memory for initialization would have its optional ROM code shadowed before a RAID device that requires 16 KB of memory. This method continues until all of the optional ROM codes are shadowed or until the available memory for shadowing optional ROM codes is exhausted. Consequently, an initialization error could occur if a user wanted to boot an OS from a peripheral device having a controller with a smaller relative optional ROM code that may or may not be shadowed during initialization. If the device having the bootable OS is not initialized, the system will be forced into an undesirable loop causing the system initialization to fail.
Another conventional solution allows users to disable some of the PCI optional ROM codes using an PCI/SCSI configuration menu. Although this technique is effective in xe2x80x9cfreeing-upxe2x80x9d memory, it is disadvantageous because it allows initialization errors if a user unknowingly disables an optional ROM code of a device required for system initialization.
Another solution deployed by conventional systems allows users to disable device controllers via the system""s BIOS set-up menu. Though effective, the user must know which device controllers are in which PCI slots before disabling the controller. This solution requires the user to open the system""s housing and note the location of each device controller.
The conceptual groundwork for the present disclosure involves initialization sequences for computer systems. In accordance with the teachings of the present disclosure, a system and methods are described for providing selectable initialization sequences.
According to one aspect of the present embodiment, a method for use in a computer system is disclosed. The method includes providing at least one reference associated with a device coupled to the system, selecting the reference associated with the device, and determining an initialization sequence based upon the selected reference.
More specifically, one embodiment of the method includes storing the initialization sequence in a medium, such as non-volatile memory device, associated with the system.
Another embodiment of the method includes configuring the method to be used with a basic input output system (BIOS) that deploys a power on self test (POST) routine.
A further embodiment of the method includes a POST routine configured to shadow an optional ROM code for the at least one device into a medium coupled to the system, the shadowing being based upon the determined initialization sequence.
According to another aspect of one embodiment, a method of initializing a computer system is disclosed. The method includes providing a device list associated with the system and determining an initialization sequence based upon the device list. The method further includes initializing at least one device coupled to the system based upon the determined sequence wherein the device list includes a reference to at least one device coupled to the system.
In another aspect of one embodiment, a method of providing initialization information for a system is disclosed. The method includes selecting information associated with at least one device coupled to the system and determining an initialization sequence based upon the selected information.
More specifically, one embodiment of the method includes selecting an operating system associated with at least one device coupled to the system.
In a further aspect of one embodiment, a system is disclosed. The system includes at least one processor, at least one storage medium coupled to the processor, at least one device coupled to the system, the device comprising an initialization reference associated with the device. The system further includes a program of instructions, associated with the system, the program of instructions including at least one instruction to determine an initialization sequence of the system based upon the at least one device.
In another aspect of one embodiment, a method of initializing a computer system is disclosed. The method includes providing a device reference for at least one device and allowing a user to select the at least one reference. The method determines an initialization sequence based upon the user selected reference and stores the initialization sequence in a medium associated with the system. The method also includes accessing the stored sequence during a BIOS initialization routine, wherein the BIOS initialization routine deploys a power on self test routine (POST). The method also includes shadowing an optional ROM code for the selected reference wherein the shadowing is based upon the initialization sequence.
It is a technical advantage that an initialization sequence can be selected by a user thereby allowing the user to selectively initialize peripheral devices during a POST routine.
It is another technical advantage that a system is provided having a BIOS set-up menu configured to allow a user to select an initialization sequence for selective peripheral devices. In this manner, the system can initialize a selected peripheral device having a desirable operating system.